// 任务管理页面JS模块
layui.define(['table', 'form', 'layer', 'jquery'], function(exports) {
    var table = layui.table;
    var form = layui.form;
    var layer = layui.layer;
    var $ = layui.jquery;
    
    var tasks = {
        // 初始化任务管理
        init: function() {
            this.loadApplications();
            this.initTable();
            this.bindEvents();
        },
        
        // 初始化表格
        initTable: function() {
            table.render({
                elem: '#task-table',
                url: '/devc/api/tasks',
                page: true,
                cols: [[
                    {field: 'id', title: 'ID', width: 80, sort: true},
                    {field: 'name', title: '任务名称', width: 200},
                    {field: 'featureName', title: '所属功能', width: 150},
                    {field: 'applicationName', title: '所属应用', width: 150},
                    {field: 'versionNumber', title: '所属版本', width: 120},
                    {field: 'description', title: '描述', width: 300},
                    {field: 'status', title: '状态', width: 100, templet: '#statusTpl'},
                    {title: '操作', width: 150, align: 'center', toolbar: '#table-operation'}
                ]],
                parseData: function(res) {
                    return {
                        "code": res.code,
                        "msg": res.msg,
                        "count": res.count,
                        "data": res.data
                    };
                }
            });
        },
        
        // 绑定事件
        bindEvents: function() {
            // 表格工具条事件
            table.on('tool(task-table)', function(obj){
                var data = obj.data;
                if(obj.event === 'edit'){
                    tasks.showForm('编辑任务', data);
                } else if(obj.event === 'del'){
                    tasks.deleteTask(data.id, obj);
                }
            });
            
            // 新增任务按钮
            $('#add-task').on('click', function(){
                tasks.showForm('新增任务');
            });
            
            // 搜索按钮
            $('#search-btn').on('click', function(){
                table.reload('task-table', {
                    where: {
                        applicationId: $('select[name=application]').val(),
                        versionId: $('select[name=version]').val(),
                        featureId: $('select[name=feature]').val(),
                        status: $('select[name=status]').val(),
                        search: $('input[name=search]').val()
                    }
                });
            });
            
            // 导出按钮
            $('#export-tasks').on('click', function(){
                tasks.exportData();
            });
            
            // 导入按钮
            $('#import-tasks').on('click', function(){
                tasks.importData();
            });
            
            // 表单提交事件
            form.on('submit(save-task)', function(data){
                tasks.saveTask(data.field);
                return false;
            });
        },
        
        // 加载应用列表
        loadApplications: function() {
            $.ajax({
                url: '/devc/api/applications/list',
                type: 'GET',
                success: function(res) {
                    if (res.code === 0) {
                        var filterSelect = $('#application-select');
                        var formSelect = $('#form-application-select');
                        
                        filterSelect.empty();
                        formSelect.empty();
                        
                        filterSelect.append('<option value="">全部应用</option>');
                        formSelect.append('<option value="">请选择应用</option>');
                        
                        res.data.forEach(function(item){
                            filterSelect.append('<option value="' + item.id + '">' + item.name + '</option>');
                            formSelect.append('<option value="' + item.id + '">' + item.name + '</option>');
                        });
                        
                        form.render('select');
                        
                        // 监听应用选择变化
                        form.on('select(application)', function(data){
                            tasks.loadVersions(data.value);
                            $('#feature-select').empty().append('<option value="">全部功能</option>');
                            form.render('select');
                        });
                        
                        form.on('select(form-application)', function(data){
                            tasks.loadFormVersions(data.value);
                            $('#form-feature-select').empty().append('<option value="">请选择功能</option>');
                            form.render('select');
                        });
                    } else {
                        layer.msg(res.msg || '获取应用列表失败');
                    }
                },
                error: function() {
                    layer.msg('网络错误，请检查连接');
                }
            });
        },
        
        // 加载版本列表（筛选用）
        loadVersions: function(applicationId) {
            if (!applicationId) return;
            
            $.ajax({
                url: '/devc/api/versions/by-application/' + applicationId,
                type: 'GET',
                success: function(res) {
                    if (res.code === 0) {
                        var select = $('#version-select');
                        select.empty();
                        select.append('<option value="">全部版本</option>');
                        
                        res.data.forEach(function(item){
                            select.append('<option value="' + item.id + '">' + item.versionNumber + '</option>');
                        });
                        
                        form.render('select');
                        
                        // 监听版本选择变化
                        form.on('select(version)', function(data){
                            tasks.loadFeatures(applicationId, data.value);
                        });
                    } else {
                        layer.msg(res.msg || '获取版本列表失败');
                    }
                },
                error: function() {
                    layer.msg('网络错误，请检查连接');
                }
            });
        },
        
        // 加载版本列表（表单用）
        loadFormVersions: function(applicationId) {
            if (!applicationId) return;
            
            $.ajax({
                url: '/devc/api/versions/by-application/' + applicationId,
                type: 'GET',
                success: function(res) {
                    if (res.code === 0) {
                        var select = $('#form-version-select');
                        select.empty();
                        select.append('<option value="">请选择版本</option>');
                        
                        res.data.forEach(function(item){
                            select.append('<option value="' + item.id + '">' + item.versionNumber + '</option>');
                        });
                        
                        form.render('select');
                        
                        // 监听版本选择变化
                        form.on('select(form-version)', function(data){
                            tasks.loadFormFeatures(applicationId, data.value);
                        });
                    } else {
                        layer.msg(res.msg || '获取版本列表失败');
                    }
                },
                error: function() {
                    layer.msg('网络错误，请检查连接');
                }
            });
        },
        
        // 加载功能列表（筛选用）
        loadFeatures: function(applicationId, versionId) {
            if (!applicationId || !versionId) return;
            
            $.ajax({
                url: '/devc/api/features/by-application/' + applicationId + '/by-version/' + versionId,
                type: 'GET',
                success: function(res) {
                    if (res.code === 0) {
                        var select = $('#feature-select');
                        select.empty();
                        select.append('<option value="">全部功能</option>');
                        
                        res.data.forEach(function(item){
                            select.append('<option value="' + item.id + '">' + item.name + '</option>');
                        });
                        
                        form.render('select');
                    } else {
                        layer.msg(res.msg || '获取功能列表失败');
                    }
                },
                error: function() {
                    layer.msg('网络错误，请检查连接');
                }
            });
        },
        
        // 加载功能列表（表单用）
        loadFormFeatures: function(applicationId, versionId) {
            if (!applicationId || !versionId) return;
            
            $.ajax({
                url: '/devc/api/features/by-application/' + applicationId + '/by-version/' + versionId,
                type: 'GET',
                success: function(res) {
                    if (res.code === 0) {
                        var select = $('#form-feature-select');
                        select.empty();
                        select.append('<option value="">请选择功能</option>');
                        
                        res.data.forEach(function(item){
                            select.append('<option value="' + item.id + '">' + item.name + '</option>');
                        });
                        
                        form.render('select');
                    } else {
                        layer.msg(res.msg || '获取功能列表失败');
                    }
                },
                error: function() {
                    layer.msg('网络错误，请检查连接');
                }
            });
        },
        
        // 显示表单
        showForm: function(title, data) {
            // 重置表单
            form.val('task-form', {
                'id': '',
                'name': '',
                'applicationId': '',
                'versionId': '',
                'featureId': '',
                'description': '',
                'status': '待处理'
            });
            
            // 如果是编辑，填充表单数据
            if(data){
                form.val('task-form', {
                    'id': data.id,
                    'name': data.name,
                    'applicationId': data.applicationId,
                    'description': data.description,
                    'status': data.status
                });
                
                // 加载版本列表
                this.loadFormVersions(data.applicationId);
                
                // 设置版本ID和加载功能列表
                setTimeout(function(){
                    form.val('task-form', {
                        'versionId': data.versionId
                    });
                    form.render('select');
                    
                    // 加载功能列表
                    tasks.loadFormFeatures(data.applicationId, data.versionId);
                    
                    // 设置功能ID
                    setTimeout(function(){
                        form.val('task-form', {
                            'featureId': data.featureId
                        });
                        form.render('select');
                    }, 100);
                }, 100);
            }
            
            // 打开表单弹窗
            layer.open({
                type: 1,
                title: title,
                area: ['500px', '550px'],
                content: $('#task-form'),
                btn: ['确定', '取消'],
                success: function(layero, index){
                    form.render();
                },
                yes: function(index, layero){
                    $('button[lay-filter="save-task"]').click();
                },
                btn2: function(index, layero){
                    layer.close(index);
                }
            });
        },
        
        // 保存任务
        saveTask: function(data) {
            var url = data.id ? '/devc/api/tasks/' + data.id : '/devc/api/tasks';
            var method = data.id ? 'POST' : 'POST';
            
            $.ajax({
                url: url,
                type: method,
                data: data,
                success: function(res) {
                    if (res.code === 0) {
                        layer.msg('保存成功');
                        layer.closeAll('page');
                        table.reload('task-table');
                    } else {
                        layer.msg(res.msg || '保存失败');
                    }
                },
                error: function() {
                    layer.msg('网络错误，请检查连接');
                }
            });
        },
        
        // 删除任务
        deleteTask: function(id, obj) {
            layer.confirm('确定删除此任务吗？', function(index){
                $.ajax({
                    url: '/devc/api/tasks/' + id + '/delete',
                    type: 'POST',
                    success: function(res) {
                        if (res.code === 0) {
                            obj.del();
                            layer.msg('删除成功');
                        } else {
                            layer.msg(res.msg || '删除失败');
                        }
                    },
                    error: function() {
                        layer.msg('网络错误，请检查连接');
                    }
                });
                layer.close(index);
            });
        },
        
        // 导出数据
        exportData: function() {
            layer.msg('导出功能待实现');
        },
        
        // 导入数据
        importData: function() {
            layer.msg('导入功能待实现');
        }
    };
    
    exports('tasks', tasks);
});